package com.spring.boot.rpc.rpc01;

import com.spring.boot.rpc.rpc00.User;

import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

public class Client {

    public static void main(String[] args) throws IOException {
        Socket s = new Socket("127.0.0.1", 8888);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();// 在内存里开辟一个字节数组
        DataOutputStream dos = new DataOutputStream(baos);// 在字节数组外面套了一层DataOutputStream，用来往字节数组里写各种数据类型的
        dos.writeInt(123);// 通过这个方法，把123变成二进制类型

        /*
            baos.toByteArray()把123二进制类型转成一个真正的字节数组（int类型，所以是个4个字节的数组）
            最后通过write 方法，把字节数组写出去，送达到服务器端
         */
        s.getOutputStream().write(baos.toByteArray());
        s.getOutputStream().flush();

        // 读服务端的返回值（阻塞）
        DataInputStream dis = new DataInputStream(s.getInputStream());
        int id = dis.readInt();
        String name = dis.readUTF();
        User user = new User(id, name);

        System.out.println(user);

        dos.close();
        s.close();

    }

}
